ExcelVBAPartsCollection Home Excel Reference Manual DownLoad My Profile
Menu Back Next Links Excel Function Manual Myself My BBS


変数の宣言

 





変数の型の種類

変数の型の種類 データ有効範囲 キーワード 型宣言文字
バイト型 0〜255 Byte  
ブール型 True又はFalse Boolean  
整数型 -32,768〜32,767 Integer
長整数型 -2,147,481,648〜2,147,481,647 Long
単精度不動小数点型 -3.402823E38〜-1.401298E-45(負の数)
1.401298E-45〜3.402823E38(正の数)
Single
倍精度不動小数点型 -1.79769313486232E308〜
-4.94065645841247E-324(負の数)
4.94065645841247E-324〜
1.79769313486232E308(正の数)
Double
通貨型 -922,337,203,665,477.5808〜
922,337,203,665,477
Currency
日付型 西暦100年1月1日〜西暦9999年12月31日 Date  
オブジェクト型 Workbook、Range、Font等のオブジェクト Object  
文字列型 可変長 0〜2Gバイト
固定長 1〜2Gバイト
String
バリアント型 数値は倍精度不動小数点型の範囲と同じ
文字列は文字列型の範囲と同じ
Variant  





変数の宣言例

変数の型の種類 変数の宣言例 変数への値の代入例
バイト型 Dim Suuchi As Byte Suuchi = 1
ブール型 Dim Check As Boolean Check = True
整数型 Dim Suuchi As Integer Suuchi = 12345
型宣言文字( % )使用 For i% = 1 to n
  '処理
Next i%
長整数型 Dim LRow As Long LRow = 65536
型宣言文字( & )使用 LRow& = 65536
単精度不動小数点型 Dim Suuchi As Single Num = 123.456
型宣言文字( ! )使用 Num! = 123.456
倍精度不動小数点型 Dim Num As Double Num = 123456.123456
型宣言文字( # )使用 Num# = 123456.123456
通貨型 Dim Suuchi As Currency Suuchi = 12345678901234
型宣言文字( @ )使用 Suuchi@ = 12345678901234
日付型 Dim Hizuke As Date Hizuke = "2001/1/1"
オブジェクト型  
(総称オブジェクト型) Dim myWorkbook As Object Set myWorkbook = Workbooks("Test")
Dim myWorkSheet As Objec Set myWorkSheet = WorkSheets("Sheet1")
Dim myRange As Object Set myRange = Range("A1:A10")
(固有オブジェクト型) Dim myWorkbook As Workbook Set myWorkbook = Workbooks("Test")
Dim myWorkSheet As WorkSheet Set myWorkSheet = WorkSheets("Sheet1")
Dim myRange As Range Set myRange = Range("A1:A10")
文字列型  Dim Title As String Title = "Excel VBA"
型宣言文字( $ )使用 Title$ = "Excel VBA"
バリアント型 Dim myData As Variant myData = "ABC"
Dim Youbi As Variant
(Array関数による配列)
Youbi=Array _
 ("日","月","火"."水","木","金","土")
配列変数の宣言  
1次元配列 Dim Youbi(6) As String 省略 
1次元配列
(インデックス値の上・下限を指定)
Dim Youbi(1 To 7) As String 省略 
2次元配列 Dim Kuku(8,8) As Integer 省略
2次元配列
(インデックス値の上・下限を指定)
Dim Kuku(1 To 9,1 to 9) As Integer 省略 





変数の適用範囲


1. モジュールの構成
 上図は、標準モジュールのイメージ図です。
 モジュールには名前が付けられており、初期の状態では作成する(挿入された)順番に従って「Module1」、「Module2」・・・という名前が付けられます。モジュールの名前は「プロパティウインドウ」により変更することができます。
 
(1) 変更するモジュールのモジュール名をクリックします。
(2) VBEのメニューの「表示(V)」「プロパティウインドウ(W)」を選択してプロパティウインドウを表示し、「オブジェクト名」の右にある名前を変更します。
 
 コードが書かれているモジュールは、宣言領域とプロシージャ(図では、それぞれの「Sub 〜 End Sub」までが1つのプロシージャとなります。)の集まりで構成されます。
 宣言領域はモジュールの最上部で、最初のプロシージャの上の部分です。

2 変数の宣言場所と適用範囲
宣言場所 キーワード 変数の適用範囲
モジュールレベル
変数

モジュールの先頭
(宣言領域)
Dim モジュール内の全プロシージャで有効
Private モジュール内の全プロシージャで有効
Public ブック内の全モジュール内にあるすべてのプロシージャ(参照が設定されたすべてのブックも含む。)で有効
プロシージャレベル
変数

プロシージャの中
Dim プロシージャの中(プロシージャの実行後、データは破棄される。)で有効
Static プロシージャの中(プロシージャの実行後もデータは保持される。)で有効

宣言場所 キーワード 変数の指定例
モジュールレベル
変数
Dim Dim Suuchi As Long  '宣言領域に記述
Sub Test1()
  ' 処理
End Sub
Private Private Suuchi As Long  '宣言領域に記述
Sub Test2()
  ' 処理
End Sub
Public Public Suuchi As Long  '宣言領域に記述
Sub Test3()
  ' 処理
End Sub
プロシージャレベル
変数
Dim Sub Test4()
  Dim Suuchi As Long  'プロシージャ内に記述
  ' 処理
End Sub
Static Sub Test5()
  Static Suuchi As Long  'プロシージャ内に記述
  ' 処理
End Sub





変数使用の強制


 変数の宣言は必ずしも必要ではありませんが、複数のプロシージャで同一変数を利用してコードを記述する場合には値が失われてしまうこともあります。
 できるだけ変数の宣言を行うことが望ましいといえます。VBAでは、変数の利用を強制するステートメントが用意されています。

 宣言領域に「Option Exolicit」と記述すると、そのモジュール内では変数の宣言が強制され、宣言をしないとエラーになります。

 VBEのメニューで「ツール(T)」「オプション(O)」を選択し、「オプションダイアログボックスの「編集」タブをクリックすると「変数の利用を強制する(R)」のチェックボックスをオンにすると、これ以降標準モジュールが挿入されたときに、宣言領域に自動的に「Option Exolicit」が追加されます。





配列変数の添字の設定


 配列変数のインデックス番号(添字)の初期値は、特に何も指定しないときは「0 (ゼロ)」から開始します。Cells プロパティを使用してセル位置をループ処理で指定する場合や、Weekday関数の戻り値で日曜日を1とした場合など、0 から始まると不都合が生じてきます。

 そこで、このようなとき、インデックス番号(添字)を 1 から始まるようにするには、モジュールの宣言領域に「Option Base 1」というステートメントを記述すると、そのモジュール内では常にインデックス番号(添字)の初期値を 1 から開始することができるようになります。ただし、指定できる値は、0 か 1 だけです。





Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!